import { defineStore } from 'pinia'
import { findAllCategory } from '../api/category'
import { topCategory } from '../api/constants'
interface List {
  name: string
  id: string
  children: [],
  goods: []
}
export const categoryStore = defineStore('category', {
  state: () => {
    return {
      // 如果默认是[]数组，看不见默认的9个分类，等你数据加载完毕才会看到。
      // 所以：根据常量数据来生成一个默认的顶级分类数据，不会出现空白（没数据的情况）
      list: topCategory.map((item) => { return { name: item } }) as List | any
    }
  },
  getters: {},
  actions: {
    // 需要向后台获取分类加载数据
    async getMaxListeners() {
      const { result } = await findAllCategory()
      // 给每一个一级分类定义控制显示隐藏的数据，open 布尔类型，通过open设置类名控制显示隐藏。
      // 当进入一级分类的时候，将open改为true
      // 当离开一级分类的时候，将open改为false
      // 点击一级分类，二级分类，将open改为false
      // 给一级分类加上一个控制二级分类显示隐藏的数据open
      result.forEach(item => {
        item.open = false
      });
      // 并把数据放到list中
      this.list = result
      // console.log(this.list);
    },
    // 修改当前一级分类下的open数据为true,显示一级分类
    show(id) {
      const category = this.list.find(category => category.id === id)
      category.open = true
    },
    // 修改当前一级分类下的open数据为false.隐藏一级分类
    hide(id) {
      const category = this.list.find(category => category.id === id)
      category.open = false
    }
  }
})